home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1986-01-09 | 4.9 KB | 281 lines |
- 10 PRINT
- 20 PRINT "MARTY'S PHONE DIRECTORY"
- 30 PRINT
- 40 CLEAR 5000
- 50 INPUT "How many name cards are needed ";MN
- 60 IF MN<1 THEN 50
- 70 INPUT "How many Soundex folders are needed ";MC
- 80 IF MC<1 THEN 70
- 90 YES=1
- 100 NO=0
- 110 NU$="" : REM No spaces between quotes
- 120 S$="01230120022455012623010202"
- 130 DIM CO$(MC), NR%(MC), CL%(MC), NA$(MN), NL%(MN), NF$(MN), PH$(MN)
- 140 PRINT
- 150 PRINT "Setting up the directory file. Hang loose..."
- 160 FOR AC=1 TO MC-1
- 170 CL%(AC)=AC+1
- 180 NEXT AC
- 190 CL%(MC)=0
- 200 AC=1
- 210 FOR AN=1 TO MN-1
- 220 NL%(AN)=AN+1
- 230 NEXT AN
- 240 NL%(MN)=0
- 250 AN=1
- 260 KN=0
- 270 KC=0
- 280 SL=0
- 290 PRINT
- 300 PRINT "Directory contains ";KN;" names"
- 310 PRINT "IN ";KC;" Soundex folders."
- 320 PRINT "There are ";MN-KN;" unused name cards"
- 330 PRINT "and ";MC-KC;" unused Soundex folders."
- 340 PRINT
- 350 PRINT "1-Find similar names"
- 360 PRINT "2-Add names"
- 370 PRINT "3-Delete names"
- 380 PRINT "4-List entire directory by Soundex codes"
- 390 PRINT "5-Save names to disk"
- 392 PRINT "6-Load names from disk"
- 394 PRINT "7-END"
- 400 PRINT
- 410 INPUT "Select 1-7";SE
- 420 IF SE=7 THEN END
- 430 IF SE<1 OR SE>6 THEN 350
- 440 ON SE GOSUB 460,650,910,1100,2240,2430
- 450 GOTO 290
- 460 PRINT
- 470 PRINT "Find similar names"
- 480 PRINT "Enter last name (empty line for menu)"
- 490 N$=NU$
- 500 INPUT N$
- 510 IF N$=NU$ THEN RETURN
- 520 GOSUB 1250
- 530 GOSUB 1490
- 540 IF OK=YES THEN 570
- 550 PRINT "There is no Soundex folder for that name."
- 560 GOTO 480
- 570 PRINT "Under code ";C$;" are the following names:"
- 580 CN=NR%(CC)
- 590 IF CN=0 THEN 630
- 600 PRINT NA$(CN),NF$(CN),PH$(CN)
- 610 CN=NL%(CN)
- 620 GOTO 590
- 630 PRINT "End of list"
- 640 GOTO 480
- 650 PRINT
- 660 PRINT "Add names"
- 670 PRINT "Enter last name, first name, phone"
- 680 PRINT "(type an empty line for menu)"
- 690 N$=NU$:NF$=NU$:PH$=NU$
- 700 INPUT N$,NF$,PH$
- 710 IF N$=NU$ THEN RETURN
- 720 GOSUB 1250
- 730 GOSUB 1490
- 740 IF OK=YES THEN 810
- 750 IF AN>0 THEN 770
- 760 GOTO 890
- 770 GOSUB 1600
- 780 IF OK=YES THEN 810
- 790 PRINT "No more Soundex folders left."
- 800 RETURN
- 810 GOSUB 1760
- 820 IF OK=YES THEN 870
- 830 GOSUB 1870
- 840 IF OK=NO THEN 890
- 850 PRINT "Name added. Enter next name:"
- 860 GOTO 680
- 870 PRINT "Name already exists. Enter next name:"
- 880 GOTO 680
- 890 PRINT "No more name cards left."
- 900 RETURN
- 910 PRINT
- 920 PRINT "Delete a name"
- 930 PRINT "Enter last name, first name"
- 940 PRINT "(type an empty line for menu)"
- 950 N$=NU$
- 960 INPUT N$ ,NF$
- 970 IF N$=NU$ THEN RETURN
- 980 GOSUB 1250
- 990 GOSUB 1490
- 1000 IF OK=YES THEN 1030
- 1010 PRINT "No names like that on file."
- 1020 RETURN
- 1030 GOSUB 1760
- 1040 IF OK=YES THEN 1070
- 1050 PRINT "Don't have that name."
- 1060 RETURN
- 1070 GOSUB 2040
- 1080 PRINT "Name deleted."
- 1090 RETURN
- 1100 PRINT
- 1110 PRINT "List entire directory by Soundex codes"
- 1120 IF SL=0 THEN 1230
- 1130 CC=SL
- 1140 PRINT CO$(CC)
- 1150 PRINT "----"
- 1160 CN=NR%(CC)
- 1170 PRINT NA$(CN) ,NF$(CN) ,PH$(CN)
- 1180 CN=NL%(CN)
- 1190 IF CN>0 THEN 1170
- 1200 PRINT
- 1210 CC=CL%(CC)
- 1220 IF CC>0 THEN 1140
- 1230 PRINT "End of list"
- 1240 RETURN
- 1250 L1$=NU$
- 1260 FOR C=1 TO LEN(N$)
- 1270 C$=MID$(N$,C,1)
- 1280 SQ=ASC(C$)-ASC("a")+1
- 1290 IF SQ<1 OR SQ>26 THEN 1310
- 1300 L1$=L1$+MID$(S$,SQ,1)
- 1310 NEXT C
- 1320 L2$=LEFT$(L1$,1)
- 1330 LC$=L2$
- 1340 FOR C=2 TO LEN(L1$)
- 1350 C$=MID$(L1$,C,1)
- 1360 IF C$=LC$ THEN 1390
- 1370 L2$=L2$+C$
- 1380 LC$=C$
- 1390 NEXT C
- 1400 L3$=LEFT$(N$,1)
- 1410 FOR C=2 TO LEN(L2$)
- 1420 C$=MID$(L2$,C,1)
- 1430 IF C$="0" THEN 1450
- 1440 L3$=L3$+C$
- 1450 NEXT C
- 1460 L3$=LEFT$(L3$+"000",4)
- 1470 C$=L3$
- 1480 RETURN
- 1490 OK=NO
- 1500 CC=SL
- 1510 PC=0
- 1520 IF CC=0 THEN RETURN
- 1530 IF CO$(CC)<>C$ THEN 1560
- 1540 OK=YES
- 1550 RETURN
- 1560 IF CO$(CC)>C$ THEN RETURN
- 1570 PC=CC
- 1580 CC=CL%(CC)
- 1590 GOTO 1520
- 1600 IF AC<>0 THEN 1630
- 1610 OK=NO
- 1620 RETURN
- 1630 OK=YES
- 1640 SC=AC
- 1650 AC=CL%(AC)
- 1660 KC=KC+1
- 1670 CO$(SC)=C$
- 1680 CL%(SC)=CC
- 1690 NR%(SC)=0
- 1700 CC=SC
- 1710 IF PC<>0 THEN 1740
- 1720 SL=CC
- 1730 RETURN
- 1740 CL%(PC)=CC
- 1750 RETURN
- 1760 OK=NO
- 1770 CN=NR%(CC)
- 1780 PN=0
- 1790 IF CN=0 THEN RETURN
- 1800 IF NA$(CN)+NF$(CN)<>N$+NF$ THEN 1830
- 1810 OK=YES
- 1820 RETURN
- 1830 IF NA$(CN)+NF$(CN)>N$+NF$ THEN RETURN
- 1840 PN=CN
- 1850 CN=NL%(CN)
- 1860 GOTO 1790
- 1870 IF AN<>0 THEN 1900
- 1880 OK=NO
- 1890 RETURN
- 1900 OK=YES
- 1910 SN=AN
- 1920 AN=NL%(AN)
- 1930 KN=KN+1
- 1940 NA$(SN)=N$
- 1950 NF$(SN)=NF$
- 1960 PH$(SN)=PH$
- 1970 NL%(SN)=CN
- 1980 CN=SN
- 1990 IF PN<>0 THEN 2020
- 2000 NR%(CC)=CN
- 2010 RETURN
- 2020 NL%(PN)=CN
- 2030 RETURN
- 2040 IF PN<>0 THEN 2070
- 2050 N%(CC)=NL%(CN)
- 2060 GOTO 2080
- 2070 NL%(PN)=NL%(CN)
- 2080 NA$(CN)=NU$
- 2090 NF$(CN)=NU$
- 2100 PH$(CN)=NU$
- 2110 NL%(CN)=AN
- 2120 AN=CN
- 2130 KN=KN-1
- 2140 IF NR%(CC)<>0 THEN RETURN
- 2150 IF CC<>SL THEN 2180
- 2160 SL=CL%(CC)
- 2170 GOTO 2190
- 2180 CL%(PC)=CL%(CC)
- 2190 CO$(CC)=NU$
- 2200 CL%(CC)=AC
- 2210 AC=CC
- 2220 KC=KC-1
- 2230 RETURN
- 2240 IF KN>0 THEN 2270
- 2250 PRINT "This directory file is empty!"
- 2260 RETURN
- 2270 PRINT "Save names to disk"
- 2280 PRINT "Name for the output file(empty line for menu)"
- 2290 FO$=NU$
- 2300 LINE INPUT FO$
- 2310 IF FO$=NU$ THEN RETURN
- 2320 OPEN "O",1,FO$
- 2330 CC=SL
- 2340 CN=NR%(CC)
- 2350 PRINT #1, NA$(CN); ","; NF$(CN); ","; PH$(CN)
- 2360 CN=NL%(CN)
- 2370 IF CN>0 THEN 2350
- 2380 CC=CL%(CC)
- 2390 IF CC>0 THEN 2340
- 2400 PRINT "Directory saved in ";FO$
- 2410 CLOSE 1
- 2420 RETURN
- 2430 PRINT "Load names from disk"
- 2440 PRINT "Name the input file (empty line for menu)"
- 2450 FI$=NU$
- 2460 LINE INPUT FI$
- 2470 IF FI$=NU$ THEN RETURN
- 2480 OPEN "I",1,FI$
- 2490 PRINT "Reading the file, hang loose Bud!"
- 2500 IF EOF (1) THEN 2760
- 2510 INPUT #1,N$,NF$,PH$
- 2520 IF N$=NU$ THEN 2500
- 2530 PRINT N$;",";NF$;",";PH$;
- 2540 GOSUB 1250
- 2550 GOSUB 1490
- 2560 IF OK=YES THEN 2640
- 2570 IF AN>0 THEN 2590
- 2580 GOTO 2720
- 2590 GOSUB 1600
- 2600 IF OK=YES THEN 2640
- 2610 PRINT "--Cancel: No more soundex folders left, fool!"
- 2620 CLOSE 1
- 2630 RETURN
- 2640 GOSUB 1760
- 2650 IF OK=YES THEN 2700
- 2660 GOSUB 1870
- 2670 IF OK=NO THEN 2720
- 2680 PRINT "--OK"
- 2690 GOTO 2500
- 2700 PRINT "--Cancel: Duplicate name Zippy!"
- 2710 GOTO 2500
- 2720 PRINT "--Cancel: No more name cards left, Bonzo!"
- 2730 CLOSE 1
- 2740 RETURN
- 2750 PRINT
- 2760 PRINT "End of file ";FI$
- 2770 CLOSE 1
- 2780 RETURN
-